package prjtgl.metier.comptes.profil_societe;

import java.io.Serializable;
import java.util.List;
import java.util.Set;
import javax.persistence.*;
import prjtgl.metier.comptes.*;
import prjtgl.metier.comptes.profil_utilisateur.poste.Direction;


/**
 * Societe
 * @author Lucie
 */
@Entity
@Table(name="societe")
public class Societe implements Serializable {

	/** Identifiant en BDD */
	private long id;
	
	/**
	 * Nom de la societe
	 */
	private String nom;
	
	/**
	 * Directions de la société
	 */
	private List<Direction> directions;

	/**
	 * Retourne l'ID BDD
	 * @return ID BDD
	 */
	@Id
	@Column(name="id")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public long getId() {
		return id;
	}

	/**
	 * Mutateur de l'ID BDD
	 * @param id Nouvel ID BDD
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * Retourne le nom de la societe
	 * @return Nom de la societe
	 */
	@Column(name="nom")
	public String getNom() {
		return nom;
	}

	/**
	 * Mutateur du nom de la societe
	 * @param nom Nouveau nom
	 */
	public void setNom(String nom) {
		this.nom = nom;
	}

	/**
	 * Retourne les directions de la societe
	 * @return Liste des directions
	 */
	@ManyToMany(cascade= CascadeType.ALL, fetch= FetchType.LAZY)
	@JoinTable(name="societe_direction",
			joinColumns={@JoinColumn(name="id_societe")},
			inverseJoinColumns={@JoinColumn(name="id_direction")})
	public List<Direction> getDirections() {
		return directions;
	}

	/**
	 * Mutateur des directions de la societe
	 * @param directions Nouvelle liste des directions
	 */
	public void setDirections(List<Direction> directions) {
		this.directions = directions;
	}
	
	
}
